//SQLServer数据库导入
#import  "c:\Program Files\Common Files\System\ado\msado15.dll" no_namespace   rename ("EOF", "adoEOF") 

//定义数据库连接对象和结果集对象
_ConnectionPtr m_pConnection; 
_RecordsetPtr m_pRecordset; 

//初始化数据库连接
void InitADOConn()
{
    ::CoInitialize(NULL); // 初始化OLE/COM库环境

    try	
	{		
		m_pConnection.CreateInstance("ADODB.Connection"); 		// 创建Connection对象	
		// 设置连接字符串，必须是BSTR型或者_bstr_t类型	(根据数据库的服务器、数据库名、数据库用户和数据库用户密码)	
		_bstr_t strConnect =  "driver={SQL Server};Server=PC-ZCHXTGA1\\SQLEXPRESS;Database=CMSDB;UID=sa;PWD=Sa12345";	
		m_pConnection->Open(strConnect,"","",adModeUnknown);
	}		
	catch(_com_error e) 	// 捕捉异常		
	{	
		AfxMessageBox(e.Description());		// 显示错误信息	
	}
}

//执行SQL查询语句
_RecordsetPtr& GetRecordSet(_bstr_t bstrSQL)
{
    try		
	{		
		// 连接数据库，如果Connection对象为空，则重新连接数据库		
		if(m_pConnection==NULL)			
			InitADOConn();		
		
		m_pRecordset.CreateInstance(__uuidof(Recordset));	// 创建记录集对象	
		// 取得表中的记录		
		m_pRecordset->Open(bstrSQL,m_pConnection.GetInterfacePtr(),adOpenDynamic,adLockOptimistic,adCmdText);		
	}
	catch(_com_error e)		// 捕捉异常	
	{	
		AfxMessageBox(e.Description());		// 显示错误信息		
	}		
	
	return m_pRecordset;  // 返回记录集	
}

//执行SQL语句
BOOL ExecuteSQL(_bstr_t bstrSQL)
{    
	// _variant_t RecordsAffected;	
	try		
	{			
		if(m_pConnection == NULL)		// 是否已经连接数据库		
			InitADOConn();
		
		m_pConnection->Execute(bstrSQL,NULL,adCmdText); // 执行SQL语句

		// Connection对象的Execute方法:(_bstr_t CommandText,		
		// VARIANT * RecordsAffected, long Options )		
		// 其中CommandText是命令字串，通常是SQL命令。		
		// 参数RecordsAffected是操作完成后所影响的行数,		
		// 参数Options表示CommandText的类型：adCmdText-文本命令；adCmdTable-表名		
		// adCmdProc-存储过程；adCmdUnknown-未知

		return true; //没异常就返回true
		
	}
	catch(_com_error e)	 // 捕捉异常		
	{	
		AfxMessageBox(e.Description());		
		return false;		
	}	
}

//断开数据库链接
void ExitConnect()
{    
	// 关闭记录集和连接	
	if (m_pRecordset != NULL)
	{
		m_pRecordset->Close();
		m_pRecordset = NULL;
	}
	
	m_pConnection->Close();	
	m_pConnection = NULL;
	
	::CoUninitialize(); // 释放环境		
}